package com.yxinsur.imc.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxinsur.imc.business.domain.ImcRecn;
import com.yxinsur.imc.business.vo.RecnDetailsCheckVo;
import com.yxinsur.imc.business.vo.RecnVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 首年手续费账单 Mapper接口
 *
 * @author imc
 * @date 2021-03-18
 */
@Mapper
public interface ImcRecnMapper extends BaseMapper<ImcRecn> {
    /**
     * 新增主表
     *
     * @param imcRecn 主表
     * @return 结果
     */
    long insertImcRecn(ImcRecn imcRecn);

    /**
     * 更新主表
     *
     * @param imcRecn 主表
     * @return 结果
     */
    long updateImcRecn(ImcRecn imcRecn);

    /**
     * 删除主表
     *
     * @param imcRecn 主表
     * @return 结果
     */
    long deleteImcRecn(ImcRecn imcRecn);

    /**
     * 查询主表列表
     *
     * @param settleMonth 结算年月
     * @param supplierId  供应商id
     * @param orgIdArr    机构ID
     * @param tenantId    租户id
     * @return 结果
     */
    List<RecnVo> listImcRecn(@Param("settleMonth") String settleMonth, @Param("orgIdArr") String[] orgIdArr, @Param("supplierId") Long supplierId, @Param("tenantId") Long tenantId);

    /**
     * 根据{主表ID}查询主表
     *
     * @param id 主表ID
     * @return 结果
     */
    ImcRecn getImcRecnById(@Param("id") Long id);

    /**
     * 查询核对结果列表（平账与短账）
     *
     * @param recnId   主表ID
     * @param tenantId 租户ID
     * @return 核对结果列表
     */
    List<RecnDetailsCheckVo> listCheckOfLsSuccessAndLs(@Param("recnId") Long recnId, @Param("tenantId") Long tenantId);

    /**
     * 查询核对结果列表（长账）
     *
     * @param recnId   主表ID
     * @param tenantId 租户ID
     * @return 核对结果列表
     */
    List<RecnDetailsCheckVo> listCheckOfSL(@Param("recnId") Long recnId, @Param("tenantId") Long tenantId);
}
